#pragma once

#include "Screen.h"
#include "Keys.h"
#include "NRF.h"

// ====================================================================================
// Tank 坦克遥控类
// ====================================================================================
class Tank {
public:
  // 构造函数
  Tank(Screen& screen, Keys& keys, NRF& nrf);

  // 主入口函数
  void main();

private:
  Screen& _screen;
  Keys& _keys;
  NRF& _nrf;

  // 坦克控制数据结构
  struct TankKVS {
    // 4个前端按键
    bool L_up = HIGH;
    bool L_down = HIGH;
    bool R_up = HIGH;
    bool R_down = HIGH;

    bool light = 0;    // switch_L1
    bool power = 0;    // switch_R2
    bool trigger = 1;  // R_up

    // int8_t 是有符号char型 -128 到 127
    int8_t LX = 0;
    int8_t LY = 0;
    int8_t RX = 0;
    int8_t RY = 0;
  };

  // 初始化NRF通信
  void initNRF();

  // 更新控制数据
  void updateControlData(TankKVS& kvs);

  // 发送控制数据
  void sendControlData(const TankKVS& kvs);

  // 显示控制数据
  void displayControlData(const TankKVS& kvs);
};
